1 00:00:04,460 --> 00:00:07,140 Hello, everyone welcome to the University of 2 00:00:07,140 --> 00:00:11,440 Illinois Coursera Course on Heterogeneous Parallel Programming. 3 00:00:11,440 --> 00:00:14,860 My name is Wen-mei Hwu, I'm a professor at the university. 4 00:00:14,860 --> 00:00:16,480 I'm in both Electrical and Computer 5 00:00:16,480 --> 00:00:19,580 Engineering Department and the Computer Science Department. 6 00:00:19,580 --> 00:00:23,679 And on behalf of the teaching staff, I'd like to welcome you to this course. 7 00:00:24,700 --> 00:00:26,580 The purpose of this course is for you 8 00:00:26,580 --> 00:00:29,730 to learn how to program heterogeneous parallel computing 9 00:00:29,730 --> 00:00:34,400 systems and achieve high performance and high energy efficiency. 10 00:00:34,400 --> 00:00:36,840 And while you do so, we'd like to also help you 11 00:00:36,840 --> 00:00:39,380 to understand how to achieve full 12 00:00:39,380 --> 00:00:41,998 functionality and maintainability for your code. 13 00:00:41,998 --> 00:00:47,840 Like to teach you, in the programming style in which 14 00:00:47,840 --> 00:00:53,850 you can expect your code to be scalable across future hardware generations. 15 00:00:53,850 --> 00:00:54,760 And towards the end 16 00:00:54,760 --> 00:00:59,570 of the course, we will also teach the programming interfaces and the concepts 17 00:00:59,570 --> 00:01:05,900 that will help you to make sure that your code is portable across vendor devices. 18 00:01:05,900 --> 00:01:10,450 In terms of technical subjects, we're going to start with the basics. 19 00:01:10,450 --> 00:01:13,180 We're going to be teaching parallel programming 20 00:01:13,180 --> 00:01:18,830 APIs, or application programming interfaces, tools, and techniques. 21 00:01:18,830 --> 00:01:20,110 Once we cover the basic 22 00:01:20,110 --> 00:01:22,480 material, we'll go into the core of the course, 23 00:01:24,010 --> 00:01:26,798 which is the principles and patterns of parallel algorithms. 24 00:01:26,798 --> 00:01:32,670 And through the course, we also introduce processor 25 00:01:32,670 --> 00:01:37,605 architecture features and constraints that you need to understand well, in order to 26 00:01:37,605 --> 00:01:42,930 achieve your performance and energy efficiency goals. 27 00:01:42,930 --> 00:01:45,490 Again, my name is Wen-mei Hwu. 28 00:01:45,490 --> 00:01:48,810 And if you want to send me e-mail, here's my e-mail address. 29 00:01:48,810 --> 00:01:55,760 And please use square bracket Coursera HPP to start your email subject line. 30 00:01:55,760 --> 00:01:59,710 I'll be looking for emails with this subject line on a daily basis. 31 00:02:01,380 --> 00:02:03,540 I like to acknowledge that there is a 32 00:02:03,540 --> 00:02:08,000 very strong team of teaching assistants for this offering. 33 00:02:08,000 --> 00:02:10,400 We have Abdul Dakkak, Izzat 34 00:02:10,400 --> 00:02:17,550 El Hajj, Tom Jablin and Andy Schuh who are University Illinois staffs, who have been 35 00:02:17,550 --> 00:02:19,860 working on the various infrastructure and the 36 00:02:19,860 --> 00:02:23,370 contents, and so, so on for this course. 37 00:02:23,370 --> 00:02:24,850 And we have a very strong team 38 00:02:24,850 --> 00:02:28,920 of community TAs and these were outstanding students 39 00:02:28,920 --> 00:02:32,010 who had who had achieved an the 40 00:02:32,010 --> 00:02:35,550 certificate of distinction from the previous offering and 41 00:02:35,550 --> 00:02:41,300 they have kindly offered their time to help you to learn in this offering. 42 00:02:41,300 --> 00:02:43,820 And this course contains an, an enormous 43 00:02:43,820 --> 00:02:47,564 amount of intellectual contents and peop-, there 44 00:02:47,564 --> 00:02:53,210 are many, many people who have contributed to to these contents over the years. 45 00:02:53,210 --> 00:02:57,308 In particular I'd like to acknowledge my co-author, 46 00:02:57,308 --> 00:03:00,740 Dr. David Kirk, and who has also been my 47 00:03:00,740 --> 00:03:04,700 collaborator and co-, co-conspirator for many 48 00:03:04,700 --> 00:03:07,510 initiatives in the past several years. 49 00:03:07,510 --> 00:03:10,150 My former students, John Stratton and Isaac 50 00:03:10,150 --> 00:03:13,390 Gelado have been teaching various forms of 51 00:03:13,390 --> 00:03:18,140 this course with me, and of course, they have added so much, to this course. 52 00:03:18,140 --> 00:03:26,330 John Stone who is the lead developer of of BMD and he has been you know, adding much 53 00:03:26,330 --> 00:03:31,130 application, content, and examples and so on to this course. 54 00:03:31,130 --> 00:03:36,490 And Javier Casavas, Ca, Ca, Cabezas is my current PhD student 55 00:03:36,490 --> 00:03:40,062 who have been helping me to update the contents of the course. 56 00:03:40,062 --> 00:03:45,020 And Dr. Michael Garland at NVIDIA Research, who have been helping me with so 57 00:03:45,020 --> 00:03:51,300 many algorithm contents and important feedback over time. 58 00:03:51,300 --> 00:03:56,900 Of course all the TAs and many many other people have, have been adding and 59 00:03:56,900 --> 00:04:01,770 refining these contents for us. Since you're watching 60 00:04:01,770 --> 00:04:06,790 the video now, you already know how to get to the Coursera HTTP website. 61 00:04:06,790 --> 00:04:10,520 However, you should also know that we will be able 62 00:04:10,520 --> 00:04:15,960 to find handouts, quizzes, labs, and lecture slides in those, in, 63 00:04:15,960 --> 00:04:20,680 in the website. In this offering, we're going to to give 64 00:04:20,680 --> 00:04:26,740 you the option of, of, weekly view verses Classic view for all your work. 65 00:04:28,148 --> 00:04:30,839 You know in a weekly view you'll be able to find 66 00:04:30,839 --> 00:04:35,070 everything you need to do for this course during each week. 67 00:04:35,070 --> 00:04:37,560 And this is a very easy way for you to 68 00:04:37,560 --> 00:04:41,380 ensure that you have completed all your work for that 69 00:04:41,380 --> 00:04:42,615 for that week. 70 00:04:42,615 --> 00:04:48,470 But if you strongly prefer Coursera web page 71 00:04:48,470 --> 00:04:54,620 layout and so on, then you will be able to also use the Classic view of, Coursera. 72 00:04:54,620 --> 00:04:58,690 In the website, you will also find sample book chapters 73 00:04:58,690 --> 00:05:03,850 and documentation and software resources to help you with your learning. 74 00:05:03,850 --> 00:05:08,660 And we're also going to be making periodic electronic announcements. 75 00:05:08,660 --> 00:05:13,868 So you can also subscribe to email notices of these announcements. 76 00:05:13,868 --> 00:05:17,860 For the forum, I'd like to you know, encourage you 77 00:05:17,860 --> 00:05:22,040 to bring all your questions to the electronic discussion forum. 78 00:05:22,040 --> 00:05:25,290 And the community TAs will be, you know, reading 79 00:05:25,290 --> 00:05:28,680 and answering these postings, and many of your classmates 80 00:05:28,680 --> 00:05:31,070 will often have, often have very good answers to 81 00:05:31,070 --> 00:05:33,650 your questions as well, on a very timely basis. 82 00:05:35,090 --> 00:05:42,644 When it comes to grading this course is divided 50/50 between quizzes and labs. 83 00:05:42,644 --> 00:05:45,820 For the quizzes, are weekly quizzes that are 84 00:05:45,820 --> 00:05:49,360 designed to help to fully understand the lecture 85 00:05:49,360 --> 00:05:53,322 contents and then you can repeat taking these 86 00:05:53,322 --> 00:05:57,560 cour- quizzes until you are satisfied with your performance. 87 00:05:57,560 --> 00:06:00,140 And then the labs are also 88 00:06:00,140 --> 00:06:03,070 weekly, and they are designed to help you to 89 00:06:03,070 --> 00:06:06,660 master all the concepts you have learned in this course. 90 00:06:06,660 --> 00:06:10,138 At the beginning, there will be a single track lab, but 91 00:06:10,138 --> 00:06:13,394 at the towards the end you will have the option to 92 00:06:13,394 --> 00:06:18,722 choose between alternative languages and the concepts so that you 93 00:06:18,722 --> 00:06:23,950 can you can tailor your experience through this course or with those choices. 94 00:06:26,320 --> 00:06:30,250 The, there is a very simple Academic Honesty Code 95 00:06:30,250 --> 00:06:36,040 in this course; basically this course encourages collaboration and discussion. 96 00:06:36,040 --> 00:06:39,370 So you are allowed to and encouraged to discuss 97 00:06:39,370 --> 00:06:43,620 the assignments with others with other students in the class. 98 00:06:43,620 --> 00:06:46,980 You're also, more than welcome to get verbal advice, 99 00:06:46,980 --> 00:06:51,300 help from people who have already taken this course. 100 00:06:51,300 --> 00:06:55,510 On the other hand, any sharing of code is unacceptable. 101 00:06:55,510 --> 00:07:00,380 This includes posting your own code at the discussion forum, or 102 00:07:00,380 --> 00:07:04,170 reading someone else's code and then go and write your own code. 103 00:07:04,170 --> 00:07:06,070 The reason why we don't want to do so 104 00:07:06,070 --> 00:07:09,000 is because we'd really like to for you to have 105 00:07:09,000 --> 00:07:13,420 a complete, top to bottom experience in developing every 106 00:07:13,420 --> 00:07:16,396 piece of code in this course so that you can 107 00:07:16,396 --> 00:07:20,260 truly thoroughly understand all the concepts. 108 00:07:20,260 --> 00:07:23,580 And as far as quizzes are concerned, giving 109 00:07:23,580 --> 00:07:26,320 and receiving help on the quiz is unacceptable. 110 00:07:26,320 --> 00:07:29,370 These quizzes should be solely your personal work. 111 00:07:30,660 --> 00:07:32,605 The course is designed to be 112 00:07:32,605 --> 00:07:35,080 self-contained, that is, you should be able 113 00:07:35,080 --> 00:07:41,400 to learn all the concepts by listening to, by watching the lecture videos, 114 00:07:41,400 --> 00:07:46,979 by reading through all the material that we will be provided to you online. 115 00:07:46,979 --> 00:07:50,090 However for those of you who would like to have a 116 00:07:50,090 --> 00:07:54,980 richer learning experience and having more depth and more breadth in 117 00:07:54,980 --> 00:08:00,115 your learning I would recommend you the read the textbook by David Kirk and 118 00:08:00,115 --> 00:08:05,380 myself: Programming Massively Parallel Processors - A Hands-on Approach. 119 00:08:05,380 --> 00:08:06,560 We're at our second 120 00:08:06,560 --> 00:08:11,400 addition and it's published by Morgan Kaufman in 121 00:08:11,400 --> 00:08:16,574 2013. And for those of you who are you know, who 122 00:08:16,574 --> 00:08:21,700 will be doing lab assignments, I would like to highly encourage you 123 00:08:21,700 --> 00:08:27,040 to read all the accompanying instructions and note, notes 124 00:08:27,040 --> 00:08:32,030 for these assignments. Over the years, we have learned that 125 00:08:32,030 --> 00:08:36,490 there are quite a few pitfalls and details that all the students 126 00:08:36,490 --> 00:08:39,690 need to be aware of in order to be productive in the lab. 127 00:08:39,690 --> 00:08:41,500 So we have you know, added all 128 00:08:41,500 --> 00:08:44,770 this material into those accompanying instructions and notes. 129 00:08:44,770 --> 00:08:47,110 I would highly recommend that you read them 130 00:08:47,110 --> 00:08:50,760 before you, you start your project, each assignment. 131 00:08:50,760 --> 00:08:57,320 And of course as you write your CUDA C code you are more than welcome to refer 132 00:08:57,320 --> 00:09:01,984 to NVIDIA CUDA C Programming Guide, and pro-, version five. 133 00:09:01,984 --> 00:09:05,101 Now NVIDIA just recently released version six. 134 00:09:05,101 --> 00:09:11,170 Either of these versions will work just fine for the purpose of this course. 135 00:09:11,170 --> 00:09:13,580 Now I'd like to just have have a few words 136 00:09:13,580 --> 00:09:18,960 about the history of this course, how this course came about. 137 00:09:18,960 --> 00:09:23,340 In 2006, David Kirk, then the chief scientist of NVIDIA, 138 00:09:23,340 --> 00:09:26,870 gave a guest lecture in my University of Illinois class. 139 00:09:26,870 --> 00:09:32,264 And at dinner, David asked my department head [UNKNOWN] 140 00:09:32,264 --> 00:09:36,266 Blahut and myself you know, what that the ind-, 141 00:09:36,266 --> 00:09:40,094 the whole industry was in the process of introducing 142 00:09:40,094 --> 00:09:45,760 parallel computing devices you know in 2005 and 2006. 143 00:09:45,760 --> 00:09:49,110 So you know the question was whether 144 00:09:49,110 --> 00:09:55,340 the academia was ready to, to educate the the enormous 145 00:09:55,340 --> 00:09:59,943 number of students who need to know parallel programming in the years to come. 146 00:09:59,943 --> 00:10:04,260 And you know [UNKNOWN] being a good department 147 00:10:04,260 --> 00:10:07,050 had turned the table around and asked David And 148 00:10:07,050 --> 00:10:10,520 saying, hey, David, if people like Wen Mei 149 00:10:10,520 --> 00:10:14,320 would like to teach such a high-quality parallel programming 150 00:10:14,320 --> 00:10:18,270 class, would you be willing to come and help us to plant and 151 00:10:18,270 --> 00:10:23,280 teach such a course? And David said of course I would. 152 00:10:23,280 --> 00:10:28,810 So in Ju-, July of 2006, David finished 153 00:10:28,810 --> 00:10:35,030 touring through all the top universities and after some evaluation 154 00:10:35,030 --> 00:10:39,530 at NVIDIA, NVIDIA announced that Illinois will be 155 00:10:39,530 --> 00:10:46,420 the primary partner for developing such a high quality parallel programming class. 156 00:10:46,420 --> 00:10:50,750 And then David and I started to collaborate, and in 157 00:10:50,750 --> 00:10:55,138 that particular course and many many other projects ever since. 158 00:10:55,138 --> 00:11:00,560 In two, November 2006, NVIDIA announced G80 and, and, and 159 00:11:00,560 --> 00:11:05,840 they also had the first version of CUDA available 160 00:11:05,840 --> 00:11:06,980 in their labs. 161 00:11:06,980 --> 00:11:11,510 So I took four of my grad students for a training workshop at NVIDIA, and we 162 00:11:11,510 --> 00:11:14,470 spent two days working on these training projects, 163 00:11:14,470 --> 00:11:17,410 what we called the kitchen projects at NVIDIA. 164 00:11:17,410 --> 00:11:20,030 And all the Foursquare students you know, students 165 00:11:20,030 --> 00:11:24,190 managed to finish their training projects ahead of me. 166 00:11:24,190 --> 00:11:27,301 And know, I would like to highly encourage everyone who 167 00:11:27,301 --> 00:11:31,083 wants to learn parallel programming to learn it while they are, 168 00:11:31,083 --> 00:11:33,390 while you are young. 169 00:11:33,390 --> 00:11:41,150 And then 2000, in December 2007, David and I were in panic mode and we were producing 170 00:11:41,150 --> 00:11:45,140 all the lectures for ECE498AL, which is the course 171 00:11:45,140 --> 00:11:49,560 number that my department assigned to our experimental course. 172 00:11:49,560 --> 00:11:53,790 And this lasts through the entire Christmas season 173 00:11:53,790 --> 00:11:56,200 and our families were not in exactly happy 174 00:11:56,200 --> 00:12:00,890 with us during that particular Christmas season. 175 00:12:00,890 --> 00:12:05,892 In January 2007, we we started the course and the 176 00:12:05,892 --> 00:12:10,730 course was you know was registered by about 40 students but 177 00:12:10,730 --> 00:12:15,568 when we started the course, CUDA was not officially released and 178 00:12:15,568 --> 00:12:21,030 the hardware was not even you know officially on the market. 179 00:12:21,030 --> 00:12:27,420 So we actually had to have all the students to sign an NDA, so that they can 180 00:12:27,420 --> 00:12:33,680 access to the, to the to the soft-, to the software, to the hardware and so one. 181 00:12:33,680 --> 00:12:38,830 But in February 2007, NVIDIA officially released the first version of CUDA and 182 00:12:38,830 --> 00:12:43,750 then the lab and the lecture material of the course begin to to go online. 183 00:12:44,820 --> 00:12:47,400 Ever since then the, 184 00:12:47,400 --> 00:12:51,910 the various versions of this lab and the lecture contents have 185 00:12:51,910 --> 00:12:56,710 been used by hundreds of thousands of students and faculty worldwide, 186 00:12:56,710 --> 00:13:01,530 and you know, you are actually looking at a you will be learning 187 00:13:01,530 --> 00:13:06,690 a a version of the material based on that original contents. 188 00:13:07,890 --> 00:13:13,070 In March 2007 several application 189 00:13:13,070 --> 00:13:15,140 teams including the NAMD team at the 190 00:13:15,140 --> 00:13:21,850 University of Illinois, posted universi, ECE498AL class projects. 191 00:13:21,850 --> 00:13:25,580 And even to this day the class projects have been a, a 192 00:13:25,580 --> 00:13:31,810 major component of the course that we offer at the University of Illinois. 193 00:13:31,810 --> 00:13:35,560 In June 2008, we partner with 194 00:13:35,560 --> 00:13:38,190 Virtual School of Computational Science and Engineering, 195 00:13:38,190 --> 00:13:42,980 the Barcelona Super Computing Center, the Chinese Academy of Sciences, and 196 00:13:42,980 --> 00:13:47,810 the, Pan American Institute of Advanced Studies and we started 197 00:13:47,810 --> 00:13:52,450 to offer week-long summer schools based on the contents of 198 00:13:52,450 --> 00:13:58,200 ECE498AL. In August 2011, 199 00:13:58,200 --> 00:14:03,640 ECE498AL became an official University of Illinois course. 200 00:14:03,640 --> 00:14:07,180 It's listed as ECE408 for Electrical and Computer 201 00:14:07,180 --> 00:14:13,690 Engineering students and CS483 for computer science students. 202 00:14:13,690 --> 00:14:15,340 And for every semester we offer the 203 00:14:15,340 --> 00:14:17,690 course, we typically will also have about 10 204 00:14:17,690 --> 00:14:20,850 students from other science, engineering and business, 205 00:14:20,850 --> 00:14:23,655 financing kind of areas in, in the class. 206 00:14:23,655 --> 00:14:29,280 And in November 2012, the University of Illinois decided 207 00:14:29,280 --> 00:14:34,270 to offer a version of ECE408 and 208 00:14:34,270 --> 00:14:38,710 through Coursera. And this course has about half the 209 00:14:38,710 --> 00:14:44,190 contents of ECE408 that we managed to, to, to, 210 00:14:44,190 --> 00:14:49,850 to trans-, to transform from a on campus, in-person delivery 211 00:14:49,850 --> 00:14:55,055 to a MOOK platform. And we had 212 00:14:55,055 --> 00:14:59,060 25,000 students registered. About 10,000 of them actually finished all 213 00:14:59,060 --> 00:15:07,470 the labs and and quizzes and nearly 3,000 students receive certificate of 214 00:15:07,470 --> 00:15:13,666 achievement and even better in some case many cases certificate of distinction. 215 00:15:13,666 --> 00:15:20,964 So you know, this turned out to be one of the highest rate of success completion 216 00:15:20,964 --> 00:15:24,244 in the MOOK community and we are very proud of the students who 217 00:15:24,244 --> 00:15:28,886 put in so much good work into into this course in that first offering. 218 00:15:28,886 --> 00:15:34,010 Through the past year, we took a year to 219 00:15:34,010 --> 00:15:37,650 you know to work additional material into the course. 220 00:15:37,650 --> 00:15:41,110 So for the, the second offering of HPP course, we 221 00:15:41,110 --> 00:15:46,530 will have between 60% and 70% of the ECE408 material in 222 00:15:46,530 --> 00:15:48,330 the, in this offering. 223 00:15:48,330 --> 00:15:53,610 And also by, through our experience in the first offering and, and student 224 00:15:53,610 --> 00:15:58,350 feedback, we, we made several major enhancements in 225 00:15:58,350 --> 00:16:04,068 the, the way the course is organized and delivered on the Coursera platform. 226 00:16:04,068 --> 00:16:07,100 So we're hoping that this will give you a 227 00:16:07,100 --> 00:16:11,750 even better, even more supported and even more friendly environment 228 00:16:11,750 --> 00:16:13,380 to learn this material. 229 00:16:15,020 --> 00:16:19,120 So here comes our tentative plan or tentative schedule. 230 00:16:20,236 --> 00:16:23,270 During week one, we will have introduction 231 00:16:23,270 --> 00:16:26,304 to heterogeneous computing, and we will give an 232 00:16:26,304 --> 00:16:28,376 overview of CUDA C and we will 233 00:16:28,376 --> 00:16:33,530 introduce the basic concepts of kernel-based parallel programming. 234 00:16:33,530 --> 00:16:36,880 In the lab, you will be, we'll give 235 00:16:36,880 --> 00:16:42,043 you a tour through our online cloud-based lab, 236 00:16:42,043 --> 00:16:47,870 and you will be doing a programming assignment of vector addition in CUDA C. 237 00:16:47,870 --> 00:16:53,266 This and during week two, we're going to cover memory module for locality 238 00:16:53,266 --> 00:16:59,150 and we'll be teaching tiling techniques for conserving memory bandwidth. 239 00:16:59,150 --> 00:17:02,570 And we'll be also teaching how 240 00:17:02,570 --> 00:17:07,402 you can handle boundary conditions in parallel tiled algorithms. 241 00:17:07,402 --> 00:17:12,080 And finally, we'll also cover performance considerations. 242 00:17:12,080 --> 00:17:14,910 So in the lab, you will be doing 243 00:17:14,910 --> 00:17:20,310 programming assignment of simple matrix-matrix multiplication in CUDA C. 244 00:17:20,310 --> 00:17:23,250 During week three, you are going to be we 245 00:17:23,250 --> 00:17:29,220 are going to be covering Parallel Convolution Pattern arguably 246 00:17:29,220 --> 00:17:31,080 one of the most important parallel 247 00:17:31,080 --> 00:17:34,212 algorithm patterns for many many applications. 248 00:17:34,212 --> 00:17:37,350 And you'll, in the lab, you'll be doing a 249 00:17:37,350 --> 00:17:42,900 programming assignment of titled matrix-matrix multiplication in CUDA C. 250 00:17:42,900 --> 00:17:47,830 During week four, we will be teaching parallel scan pattern, and this is 251 00:17:47,830 --> 00:17:50,570 a, a very important parallel algorithm 252 00:17:50,570 --> 00:17:54,250 pattern for converting many sequential algorithms into 253 00:17:54,250 --> 00:17:55,770 parallel algorithms. 254 00:17:55,770 --> 00:17:58,000 And in the lab, you will be doing 255 00:17:58,000 --> 00:18:01,790 programming assignment of parallel convolution in CUDA C. 256 00:18:03,210 --> 00:18:07,560 During week five we'll be covering parallel histogram pattern 257 00:18:07,560 --> 00:18:12,440 and the concept of critical sections and atomic operations. 258 00:18:12,440 --> 00:18:14,068 And so in the lab you will be 259 00:18:14,068 --> 00:18:18,090 doing program assignment of parallel scan in CUDA C. 260 00:18:18,090 --> 00:18:19,566 And during week six, 261 00:18:19,566 --> 00:18:24,076 we'll be teaching data transfer considerations and streams and 262 00:18:24,076 --> 00:18:29,450 so on, and to overlap communication with comp-, computation. 263 00:18:29,450 --> 00:18:34,940 And we will be also teaching the conc-, basic concepts in task parallelism. 264 00:18:34,940 --> 00:18:36,320 And in the lab, you will be doing 265 00:18:36,320 --> 00:18:40,220 a programming assignment of parallel histogram in CUDA C. 266 00:18:41,670 --> 00:18:45,450 Week seven is the beginning of broadening 267 00:18:45,450 --> 00:18:50,370 your knowledge base for parallel programming, so we will be introducing 268 00:18:50,370 --> 00:18:56,050 you to OpenCL, to C++AMP, and to Open ACC. 269 00:18:56,050 --> 00:19:00,910 And these programming interfaces are close relatives to CUDA C, but 270 00:19:00,910 --> 00:19:05,740 they will also allow you to, your code to be portable to 271 00:19:05,740 --> 00:19:10,450 other vendor hardware. And you, in the 272 00:19:10,450 --> 00:19:13,600 lab, you will be doing a programming assignment 273 00:19:13,600 --> 00:19:17,550 of vector addition using streams in CUDA C. 274 00:19:17,550 --> 00:19:22,030 In week eight, we will do a course summary. 275 00:19:22,030 --> 00:19:25,535 And we will also cover some related programming models. 276 00:19:25,535 --> 00:19:30,880 And Thrust is a, a productive library, 277 00:19:30,880 --> 00:19:35,750 parallel library, for CUDA programmers. Bolt is a productive parallel 278 00:19:35,750 --> 00:19:40,180 library, primitive library, for OpenCL programmers. 279 00:19:40,180 --> 00:19:43,910 And then we'll also talk about CUDA FORTRAN, for peop-, those of you 280 00:19:43,910 --> 00:19:48,890 who would like to be able to apply your knowledge to scientific computing. 281 00:19:48,890 --> 00:19:54,380 And in the lab, we'll have a programming assignment of simple 282 00:19:54,380 --> 00:19:59,960 matrix-matrix multiplication, with your choice of OpenCL, Open 283 00:19:59,960 --> 00:20:05,540 C++AMP, and OpenACC. During week nine, we will not, 284 00:20:05,540 --> 00:20:10,350 not have any more lectures, but it is a week where you will be 285 00:20:10,350 --> 00:20:16,340 completing any remaining lab assignments with the an optional 286 00:20:16,340 --> 00:20:21,088 bonus programming assignment in the in the choice of OpenCL, 287 00:20:21,088 --> 00:20:26,610 C++AMP or OpenACC. 288 00:20:26,610 --> 00:20:30,900 At this point, I'd like to acknowledge the generous support of, 289 00:20:30,900 --> 00:20:34,750 from Personify. And their you know, video 290 00:20:34,750 --> 00:20:39,450 technology has enabled the recording of this these lectures. 291 00:20:39,450 --> 00:20:45,900 And, I like to very much thank them for their generous 292 00:20:45,900 --> 00:20:51,710 support and generous donation of their 293 00:20:51,710 --> 00:20:53,120 time and efforts. 294 00:20:53,120 --> 00:20:58,370 So at this point, again I'd like to welcome you aboard, and I 295 00:20:58,370 --> 00:21:03,150 look forward to working with all of you in the next nine weeks. 296 00:21:03,150 --> 00:21:03,510 Thank you.